YES 28.32
H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/FiniteMap.hs
H-Termination of the given Haskell-Program with start terms could successfully be proven:
↳ HASKELL
↳ BR
mainModule FiniteMap
| ((foldFM_LE :: (Ratio Int -> b -> a -> a) -> a -> Ratio Int -> FiniteMap (Ratio Int) b -> a) :: (Ratio Int -> b -> a -> a) -> a -> Ratio Int -> FiniteMap (Ratio Int) b -> a) |
module FiniteMap where
| import qualified Maybe import qualified Prelude
|
| data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a)
|
| instance (Eq a, Eq b) => Eq (FiniteMap b a) where
|
| foldFM_LE :: Ord b => (b -> c -> a -> a) -> a -> b -> FiniteMap b c -> a
foldFM_LE | k z fr EmptyFM | = | z |
foldFM_LE | k z fr (Branch key elt _ fm_l fm_r) | |
| | key <= fr | = |
foldFM_LE k (k key elt (foldFM_LE k z fr fm_l)) fr fm_r |
|
| | otherwise | = |
|
|
|
module Maybe where
| import qualified FiniteMap import qualified Prelude
|
Replaced joker patterns by fresh variables and removed binding patterns.
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
mainModule FiniteMap
| ((foldFM_LE :: (Ratio Int -> b -> a -> a) -> a -> Ratio Int -> FiniteMap (Ratio Int) b -> a) :: (Ratio Int -> b -> a -> a) -> a -> Ratio Int -> FiniteMap (Ratio Int) b -> a) |
module FiniteMap where
| import qualified Maybe import qualified Prelude
|
| data FiniteMap a b = EmptyFM | Branch a b Int (FiniteMap a b) (FiniteMap a b)
|
| instance (Eq a, Eq b) => Eq (FiniteMap b a) where
|
| foldFM_LE :: Ord a => (a -> b -> c -> c) -> c -> a -> FiniteMap a b -> c
foldFM_LE | k z fr EmptyFM | = | z |
foldFM_LE | k z fr (Branch key elt vw fm_l fm_r) | |
| | key <= fr | = |
foldFM_LE k (k key elt (foldFM_LE k z fr fm_l)) fr fm_r |
|
| | otherwise | = |
|
|
|
module Maybe where
| import qualified FiniteMap import qualified Prelude
|
Cond Reductions:
The following Function with conditions
foldFM_LE | k z fr EmptyFM | = z |
foldFM_LE | k z fr (Branch key elt vw fm_l fm_r) |
| | key <= fr |
= | foldFM_LE k (k key elt (foldFM_LE k z fr fm_l)) fr fm_r |
|
| | otherwise | |
|
is transformed to
foldFM_LE | k z fr EmptyFM | = foldFM_LE3 k z fr EmptyFM |
foldFM_LE | k z fr (Branch key elt vw fm_l fm_r) | = foldFM_LE2 k z fr (Branch key elt vw fm_l fm_r) |
foldFM_LE1 | k z fr key elt vw fm_l fm_r True | = foldFM_LE k (k key elt (foldFM_LE k z fr fm_l)) fr fm_r |
foldFM_LE1 | k z fr key elt vw fm_l fm_r False | = foldFM_LE0 k z fr key elt vw fm_l fm_r otherwise |
foldFM_LE0 | k z fr key elt vw fm_l fm_r True | = foldFM_LE k z fr fm_l |
foldFM_LE2 | k z fr (Branch key elt vw fm_l fm_r) | = foldFM_LE1 k z fr key elt vw fm_l fm_r (key <= fr) |
foldFM_LE3 | k z fr EmptyFM | = z |
foldFM_LE3 | wv ww wx wy | = foldFM_LE2 wv ww wx wy |
The following Function with conditions
is transformed to
undefined0 | True | = undefined |
undefined1 | | = undefined0 False |
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ Narrow
mainModule FiniteMap
| (foldFM_LE :: (Ratio Int -> a -> b -> b) -> b -> Ratio Int -> FiniteMap (Ratio Int) a -> b) |
module FiniteMap where
| import qualified Maybe import qualified Prelude
|
| data FiniteMap b a = EmptyFM | Branch b a Int (FiniteMap b a) (FiniteMap b a)
|
| instance (Eq a, Eq b) => Eq (FiniteMap a b) where
|
| foldFM_LE :: Ord a => (a -> c -> b -> b) -> b -> a -> FiniteMap a c -> b
foldFM_LE | k z fr EmptyFM | = | foldFM_LE3 k z fr EmptyFM |
foldFM_LE | k z fr (Branch key elt vw fm_l fm_r) | = | foldFM_LE2 k z fr (Branch key elt vw fm_l fm_r) |
|
|
foldFM_LE0 | k z fr key elt vw fm_l fm_r True | = | foldFM_LE k z fr fm_l |
|
|
foldFM_LE1 | k z fr key elt vw fm_l fm_r True | = | foldFM_LE k (k key elt (foldFM_LE k z fr fm_l)) fr fm_r |
foldFM_LE1 | k z fr key elt vw fm_l fm_r False | = | foldFM_LE0 k z fr key elt vw fm_l fm_r otherwise |
|
|
foldFM_LE2 | k z fr (Branch key elt vw fm_l fm_r) | = | foldFM_LE1 k z fr key elt vw fm_l fm_r (key <= fr) |
|
|
foldFM_LE3 | k z fr EmptyFM | = | z |
foldFM_LE3 | wv ww wx wy | = | foldFM_LE2 wv ww wx wy |
|
module Maybe where
| import qualified FiniteMap import qualified Prelude
|
Haskell To QDPs
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_primPlusNat(Succ(wz51200), Succ(wz51000)) → new_primPlusNat(wz51200, wz51000)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_primPlusNat(Succ(wz51200), Succ(wz51000)) → new_primPlusNat(wz51200, wz51000)
The graph contains the following edges 1 > 1, 2 > 2
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_primMulNat(Succ(wz60000), Succ(wz5100)) → new_primMulNat(wz60000, Succ(wz5100))
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_primMulNat(Succ(wz60000), Succ(wz5100)) → new_primMulNat(wz60000, Succ(wz5100))
The graph contains the following edges 1 > 1, 2 >= 2
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
Q DP problem:
The TRS P consists of the following rules:
new_primCmpNat(Succ(wz5050000), Succ(wz500000)) → new_primCmpNat(wz5050000, wz500000)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_primCmpNat(Succ(wz5050000), Succ(wz500000)) → new_primCmpNat(wz5050000, wz500000)
The graph contains the following edges 1 > 1, 2 > 2
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
Q DP problem:
The TRS P consists of the following rules:
new_foldFM_LE(wz498, wz500, Branch(wz5040, wz5041, wz5042, wz5043, wz5044), h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5040, wz5041, wz5042, wz5043, wz5044, new_ltEs(wz5040, wz500, ba), h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, Branch(wz5050, wz5051, wz5052, wz5053, wz5054), True, h, ba, bb) → new_foldFM_LE(wz498, wz500, wz504, h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, Branch(wz5040, wz5041, wz5042, wz5043, wz5044), wz505, False, h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5040, wz5041, wz5042, wz5043, wz5044, new_ltEs(wz5040, wz500, ba), h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, Branch(wz5050, wz5051, wz5052, wz5053, wz5054), True, h, ba, bb) → new_foldFM_LE2(wz498, wz501, wz502, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, h, ba, bb)
new_foldFM_LE2(wz498, wz501, wz502, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, new_ltEs0(wz5050, wz500, ba), h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, EmptyFM, True, h, ba, bb) → new_foldFM_LE(wz498, wz500, wz504, h, ba, bb)
The TRS R consists of the following rules:
new_ltEs(wz5040, wz500, app(ty_[], bc)) → new_ltEs4(wz5040, wz500, bc)
new_sr(Neg(wz6000), Neg(wz510)) → Pos(new_primMulNat0(wz6000, wz510))
new_ltEs9(wz5050, wz500, bg) → new_not(new_compare1(wz5050, wz500, bg))
new_compare(Neg(Zero), Neg(Zero)) → EQ
new_ltEs0(wz5050, wz500, ty_Integer) → new_ltEs12(wz5050, wz500)
new_primCmpNat1(Succ(wz5050000), Succ(wz500000)) → new_primCmpNat1(wz5050000, wz500000)
new_compare0(wz5050, wz500) → error([])
new_ltEs(wz5040, wz500, ty_Ordering) → new_ltEs7(wz5040, wz500)
new_ltEs0(wz5050, wz500, ty_Double) → new_ltEs8(wz5050, wz500)
new_foldFM_LE0(wz498, wz499, wz500, Branch(wz5040, wz5041, wz5042, wz5043, wz5044), h, ba, bb) → new_foldFM_LE10(wz498, wz499, wz500, wz5040, wz5041, wz5042, wz5043, wz5044, new_ltEs(wz5040, wz500, ba), h, ba, bb)
new_compare1(:%(wz50500, wz50501), :%(wz5000, wz5001), ty_Integer) → new_compare0(new_sr0(wz50500, wz5001), new_sr0(wz5000, wz50501))
new_primCmpNat2(Zero, wz505000) → LT
new_sr(Pos(wz6000), Pos(wz510)) → Pos(new_primMulNat0(wz6000, wz510))
new_ltEs(wz5040, wz500, ty_@0) → new_ltEs10(wz5040, wz500)
new_ltEs2(wz5050, wz500) → new_not(error([]))
new_compare(Pos(Zero), Neg(Zero)) → EQ
new_compare(Neg(Zero), Pos(Zero)) → EQ
new_ltEs5(wz5050, wz500, bd, be) → new_not(error([]))
new_sr0(wz50500, wz5001) → error([])
new_ltEs8(wz5050, wz500) → new_not(error([]))
new_ltEs0(wz5050, wz500, app(ty_Ratio, bg)) → new_ltEs9(wz5050, wz500, bg)
new_primPlusNat1(Zero, wz5100) → Succ(wz5100)
new_ltEs0(wz5050, wz500, app(app(app(ty_@3, cb), cc), cd)) → new_ltEs14(wz5050, wz500, cb, cc, cd)
new_primMulNat0(Succ(wz60000), Zero) → Zero
new_primMulNat0(Zero, Succ(wz5100)) → Zero
new_ltEs0(wz5050, wz500, ty_Char) → new_ltEs2(wz5050, wz500)
new_ltEs(wz5040, wz500, ty_Double) → new_ltEs8(wz5040, wz500)
new_ltEs(wz5040, wz500, ty_Float) → new_ltEs3(wz5040, wz500)
new_ltEs(wz5040, wz500, app(app(ty_Either, bd), be)) → new_ltEs5(wz5040, wz500, bd, be)
new_ltEs0(wz5050, wz500, ty_Float) → new_ltEs3(wz5050, wz500)
new_primMulNat0(Succ(wz60000), Succ(wz5100)) → new_primPlusNat1(new_primMulNat0(wz60000, Succ(wz5100)), wz5100)
new_primPlusNat0(Succ(wz51200), Succ(wz51000)) → Succ(Succ(new_primPlusNat0(wz51200, wz51000)))
new_foldFM_LE0(wz498, wz499, wz500, EmptyFM, h, ba, bb) → wz499
new_compare(Neg(Succ(wz505000)), Neg(wz5000)) → new_primCmpNat2(wz5000, wz505000)
new_compare(Pos(Zero), Pos(Succ(wz50000))) → new_primCmpNat2(Zero, wz50000)
new_ltEs0(wz5050, wz500, ty_Int) → new_ltEs1(wz5050, wz500)
new_primCmpNat1(Zero, Succ(wz500000)) → LT
new_primPlusNat0(Zero, Zero) → Zero
new_ltEs11(wz5050, wz500, bh, ca) → new_not(error([]))
new_primCmpNat2(Succ(wz50000), wz505000) → new_primCmpNat1(wz50000, wz505000)
new_ltEs0(wz5050, wz500, app(app(ty_Either, bd), be)) → new_ltEs5(wz5050, wz500, bd, be)
new_not(EQ) → new_not0
new_ltEs0(wz5050, wz500, app(app(ty_@2, bh), ca)) → new_ltEs11(wz5050, wz500, bh, ca)
new_ltEs(wz5040, wz500, ty_Bool) → new_ltEs13(wz5040, wz500)
new_ltEs6(wz5050, wz500, bf) → new_not(error([]))
new_ltEs(wz5040, wz500, app(app(ty_@2, bh), ca)) → new_ltEs11(wz5040, wz500, bh, ca)
new_primCmpNat1(Zero, Zero) → EQ
new_primCmpNat0(wz505000, Zero) → GT
new_ltEs(wz5040, wz500, ty_Int) → new_ltEs1(wz5040, wz500)
new_ltEs1(wz5050, wz500) → new_not(new_compare(wz5050, wz500))
new_primMulNat0(Zero, Zero) → Zero
new_ltEs(wz5040, wz500, app(ty_Maybe, bf)) → new_ltEs6(wz5040, wz500, bf)
new_compare(Neg(Zero), Pos(Succ(wz50000))) → LT
new_primPlusNat1(Succ(wz5120), wz5100) → Succ(Succ(new_primPlusNat0(wz5120, wz5100)))
new_ltEs7(wz5050, wz500) → new_not(error([]))
new_ltEs10(wz5050, wz500) → new_not(error([]))
new_ltEs0(wz5050, wz500, ty_@0) → new_ltEs10(wz5050, wz500)
new_ltEs(wz5040, wz500, ty_Char) → new_ltEs2(wz5040, wz500)
new_ltEs4(wz5050, wz500, bc) → new_not(error([]))
new_ltEs(wz5040, wz500, ty_Integer) → new_ltEs12(wz5040, wz500)
new_ltEs(wz5040, wz500, app(ty_Ratio, bg)) → new_ltEs9(wz5040, wz500, bg)
new_ltEs12(wz5050, wz500) → new_not(new_compare0(wz5050, wz500))
new_primCmpNat1(Succ(wz5050000), Zero) → GT
new_compare(Pos(Succ(wz505000)), Neg(wz5000)) → GT
new_compare(Pos(Succ(wz505000)), Pos(wz5000)) → new_primCmpNat0(wz505000, wz5000)
new_ltEs0(wz5050, wz500, app(ty_[], bc)) → new_ltEs4(wz5050, wz500, bc)
new_ltEs(wz5040, wz500, app(app(app(ty_@3, cb), cc), cd)) → new_ltEs14(wz5040, wz500, cb, cc, cd)
new_not(GT) → False
new_compare(Pos(Zero), Neg(Succ(wz50000))) → GT
new_compare1(:%(wz50500, wz50501), :%(wz5000, wz5001), ty_Int) → new_compare(new_sr(wz50500, wz5001), new_sr(wz5000, wz50501))
new_not0 → True
new_compare(Neg(Succ(wz505000)), Pos(wz5000)) → LT
new_sr(Pos(wz6000), Neg(wz510)) → Neg(new_primMulNat0(wz6000, wz510))
new_sr(Neg(wz6000), Pos(wz510)) → Neg(new_primMulNat0(wz6000, wz510))
new_compare(Neg(Zero), Neg(Succ(wz50000))) → new_primCmpNat0(wz50000, Zero)
new_ltEs0(wz5050, wz500, ty_Ordering) → new_ltEs7(wz5050, wz500)
new_compare(Pos(Zero), Pos(Zero)) → EQ
new_ltEs3(wz5050, wz500) → new_not(error([]))
new_ltEs0(wz5050, wz500, ty_Bool) → new_ltEs13(wz5050, wz500)
new_ltEs13(wz5050, wz500) → new_not(error([]))
new_primCmpNat0(wz505000, Succ(wz50000)) → new_primCmpNat1(wz505000, wz50000)
new_ltEs0(wz5050, wz500, app(ty_Maybe, bf)) → new_ltEs6(wz5050, wz500, bf)
new_primPlusNat0(Zero, Succ(wz51000)) → Succ(wz51000)
new_primPlusNat0(Succ(wz51200), Zero) → Succ(wz51200)
new_not(LT) → new_not0
new_ltEs14(wz5050, wz500, cb, cc, cd) → new_not(error([]))
The set Q consists of the following terms:
new_ltEs0(x0, x1, ty_Char)
new_not(GT)
new_compare1(:%(x0, x1), :%(x2, x3), ty_Integer)
new_ltEs0(x0, x1, ty_@0)
new_ltEs0(x0, x1, ty_Double)
new_sr(Pos(x0), Neg(x1))
new_sr(Neg(x0), Pos(x1))
new_primMulNat0(Succ(x0), Zero)
new_primMulNat0(Zero, Succ(x0))
new_compare0(x0, x1)
new_primMulNat0(Zero, Zero)
new_primPlusNat1(Zero, x0)
new_ltEs(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs(x0, x1, app(ty_Ratio, x2))
new_sr(Pos(x0), Pos(x1))
new_ltEs0(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs(x0, x1, app(app(ty_@2, x2), x3))
new_foldFM_LE0(x0, x1, x2, Branch(x3, x4, x5, x6, x7), x8, x9, x10)
new_primCmpNat0(x0, Zero)
new_ltEs10(x0, x1)
new_primPlusNat0(Succ(x0), Succ(x1))
new_ltEs0(x0, x1, ty_Integer)
new_ltEs(x0, x1, ty_Int)
new_primCmpNat0(x0, Succ(x1))
new_ltEs7(x0, x1)
new_ltEs8(x0, x1)
new_ltEs0(x0, x1, ty_Bool)
new_ltEs0(x0, x1, app(ty_Maybe, x2))
new_ltEs(x0, x1, ty_Ordering)
new_compare(Neg(Succ(x0)), Neg(x1))
new_ltEs0(x0, x1, app(app(ty_@2, x2), x3))
new_compare(Neg(Zero), Neg(Succ(x0)))
new_compare(Pos(Zero), Neg(Zero))
new_compare(Neg(Zero), Pos(Zero))
new_ltEs4(x0, x1, x2)
new_ltEs11(x0, x1, x2, x3)
new_not0
new_primPlusNat0(Zero, Zero)
new_compare(Pos(Succ(x0)), Pos(x1))
new_ltEs(x0, x1, ty_@0)
new_ltEs(x0, x1, ty_Bool)
new_ltEs0(x0, x1, ty_Ordering)
new_sr0(x0, x1)
new_primCmpNat2(Succ(x0), x1)
new_primPlusNat0(Succ(x0), Zero)
new_primCmpNat1(Succ(x0), Zero)
new_primCmpNat1(Zero, Zero)
new_ltEs3(x0, x1)
new_not(EQ)
new_ltEs(x0, x1, ty_Float)
new_compare(Neg(Zero), Neg(Zero))
new_ltEs0(x0, x1, app(ty_Ratio, x2))
new_compare(Pos(Zero), Pos(Zero))
new_primPlusNat1(Succ(x0), x1)
new_primCmpNat1(Zero, Succ(x0))
new_ltEs0(x0, x1, app(ty_[], x2))
new_ltEs1(x0, x1)
new_ltEs(x0, x1, ty_Double)
new_ltEs(x0, x1, app(ty_Maybe, x2))
new_ltEs13(x0, x1)
new_ltEs(x0, x1, ty_Integer)
new_sr(Neg(x0), Neg(x1))
new_foldFM_LE0(x0, x1, x2, EmptyFM, x3, x4, x5)
new_compare1(:%(x0, x1), :%(x2, x3), ty_Int)
new_ltEs0(x0, x1, ty_Int)
new_ltEs(x0, x1, ty_Char)
new_ltEs0(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs12(x0, x1)
new_primMulNat0(Succ(x0), Succ(x1))
new_ltEs6(x0, x1, x2)
new_compare(Pos(Zero), Pos(Succ(x0)))
new_not(LT)
new_primCmpNat2(Zero, x0)
new_ltEs(x0, x1, app(ty_[], x2))
new_primPlusNat0(Zero, Succ(x0))
new_primCmpNat1(Succ(x0), Succ(x1))
new_ltEs14(x0, x1, x2, x3, x4)
new_ltEs5(x0, x1, x2, x3)
new_compare(Neg(Succ(x0)), Pos(x1))
new_compare(Pos(Succ(x0)), Neg(x1))
new_ltEs2(x0, x1)
new_compare(Pos(Zero), Neg(Succ(x0)))
new_compare(Neg(Zero), Pos(Succ(x0)))
new_ltEs9(x0, x1, x2)
new_ltEs0(x0, x1, ty_Float)
We have to consider all minimal (P,Q,R)-chains.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
Q DP problem:
The TRS P consists of the following rules:
new_foldFM_LE(wz498, wz500, Branch(wz5040, wz5041, wz5042, wz5043, wz5044), h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5040, wz5041, wz5042, wz5043, wz5044, new_ltEs(wz5040, wz500, ba), h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, Branch(wz5050, wz5051, wz5052, wz5053, wz5054), True, h, ba, bb) → new_foldFM_LE(wz498, wz500, wz504, h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, Branch(wz5040, wz5041, wz5042, wz5043, wz5044), wz505, False, h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5040, wz5041, wz5042, wz5043, wz5044, new_ltEs(wz5040, wz500, ba), h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, Branch(wz5050, wz5051, wz5052, wz5053, wz5054), True, h, ba, bb) → new_foldFM_LE2(wz498, wz501, wz502, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, h, ba, bb)
new_foldFM_LE2(wz498, wz501, wz502, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, new_ltEs0(wz5050, wz500, ba), h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, EmptyFM, True, h, ba, bb) → new_foldFM_LE(wz498, wz500, wz504, h, ba, bb)
The TRS R consists of the following rules:
new_ltEs0(wz5050, wz500, ty_Integer) → new_ltEs12(wz5050, wz500)
new_ltEs0(wz5050, wz500, ty_Double) → new_ltEs8(wz5050, wz500)
new_ltEs0(wz5050, wz500, app(ty_Ratio, bg)) → new_ltEs9(wz5050, wz500, bg)
new_ltEs0(wz5050, wz500, app(app(app(ty_@3, cb), cc), cd)) → new_ltEs14(wz5050, wz500, cb, cc, cd)
new_ltEs0(wz5050, wz500, ty_Char) → new_ltEs2(wz5050, wz500)
new_ltEs0(wz5050, wz500, ty_Float) → new_ltEs3(wz5050, wz500)
new_ltEs0(wz5050, wz500, ty_Int) → new_ltEs1(wz5050, wz500)
new_ltEs0(wz5050, wz500, app(app(ty_Either, bd), be)) → new_ltEs5(wz5050, wz500, bd, be)
new_ltEs0(wz5050, wz500, app(app(ty_@2, bh), ca)) → new_ltEs11(wz5050, wz500, bh, ca)
new_ltEs0(wz5050, wz500, ty_@0) → new_ltEs10(wz5050, wz500)
new_ltEs0(wz5050, wz500, app(ty_[], bc)) → new_ltEs4(wz5050, wz500, bc)
new_ltEs0(wz5050, wz500, ty_Ordering) → new_ltEs7(wz5050, wz500)
new_ltEs0(wz5050, wz500, ty_Bool) → new_ltEs13(wz5050, wz500)
new_ltEs0(wz5050, wz500, app(ty_Maybe, bf)) → new_ltEs6(wz5050, wz500, bf)
new_ltEs6(wz5050, wz500, bf) → new_not(error([]))
new_ltEs13(wz5050, wz500) → new_not(error([]))
new_ltEs7(wz5050, wz500) → new_not(error([]))
new_ltEs4(wz5050, wz500, bc) → new_not(error([]))
new_ltEs10(wz5050, wz500) → new_not(error([]))
new_ltEs11(wz5050, wz500, bh, ca) → new_not(error([]))
new_ltEs5(wz5050, wz500, bd, be) → new_not(error([]))
new_ltEs1(wz5050, wz500) → new_not(new_compare(wz5050, wz500))
new_compare(Neg(Zero), Neg(Zero)) → EQ
new_compare(Pos(Zero), Neg(Zero)) → EQ
new_compare(Neg(Zero), Pos(Zero)) → EQ
new_compare(Neg(Succ(wz505000)), Neg(wz5000)) → new_primCmpNat2(wz5000, wz505000)
new_compare(Pos(Zero), Pos(Succ(wz50000))) → new_primCmpNat2(Zero, wz50000)
new_compare(Neg(Zero), Pos(Succ(wz50000))) → LT
new_compare(Pos(Succ(wz505000)), Neg(wz5000)) → GT
new_compare(Pos(Succ(wz505000)), Pos(wz5000)) → new_primCmpNat0(wz505000, wz5000)
new_compare(Pos(Zero), Neg(Succ(wz50000))) → GT
new_compare(Neg(Succ(wz505000)), Pos(wz5000)) → LT
new_compare(Neg(Zero), Neg(Succ(wz50000))) → new_primCmpNat0(wz50000, Zero)
new_compare(Pos(Zero), Pos(Zero)) → EQ
new_not(EQ) → new_not0
new_not(GT) → False
new_not(LT) → new_not0
new_not0 → True
new_primCmpNat0(wz505000, Zero) → GT
new_primCmpNat0(wz505000, Succ(wz50000)) → new_primCmpNat1(wz505000, wz50000)
new_primCmpNat1(Succ(wz5050000), Succ(wz500000)) → new_primCmpNat1(wz5050000, wz500000)
new_primCmpNat1(Zero, Succ(wz500000)) → LT
new_primCmpNat1(Zero, Zero) → EQ
new_primCmpNat1(Succ(wz5050000), Zero) → GT
new_primCmpNat2(Zero, wz505000) → LT
new_primCmpNat2(Succ(wz50000), wz505000) → new_primCmpNat1(wz50000, wz505000)
new_ltEs3(wz5050, wz500) → new_not(error([]))
new_ltEs2(wz5050, wz500) → new_not(error([]))
new_ltEs14(wz5050, wz500, cb, cc, cd) → new_not(error([]))
new_ltEs9(wz5050, wz500, bg) → new_not(new_compare1(wz5050, wz500, bg))
new_compare1(:%(wz50500, wz50501), :%(wz5000, wz5001), ty_Integer) → new_compare0(new_sr0(wz50500, wz5001), new_sr0(wz5000, wz50501))
new_compare1(:%(wz50500, wz50501), :%(wz5000, wz5001), ty_Int) → new_compare(new_sr(wz50500, wz5001), new_sr(wz5000, wz50501))
new_sr(Neg(wz6000), Neg(wz510)) → Pos(new_primMulNat0(wz6000, wz510))
new_sr(Pos(wz6000), Pos(wz510)) → Pos(new_primMulNat0(wz6000, wz510))
new_sr(Pos(wz6000), Neg(wz510)) → Neg(new_primMulNat0(wz6000, wz510))
new_sr(Neg(wz6000), Pos(wz510)) → Neg(new_primMulNat0(wz6000, wz510))
new_primMulNat0(Succ(wz60000), Zero) → Zero
new_primMulNat0(Zero, Succ(wz5100)) → Zero
new_primMulNat0(Succ(wz60000), Succ(wz5100)) → new_primPlusNat1(new_primMulNat0(wz60000, Succ(wz5100)), wz5100)
new_primMulNat0(Zero, Zero) → Zero
new_primPlusNat1(Zero, wz5100) → Succ(wz5100)
new_primPlusNat1(Succ(wz5120), wz5100) → Succ(Succ(new_primPlusNat0(wz5120, wz5100)))
new_primPlusNat0(Succ(wz51200), Succ(wz51000)) → Succ(Succ(new_primPlusNat0(wz51200, wz51000)))
new_primPlusNat0(Zero, Zero) → Zero
new_primPlusNat0(Zero, Succ(wz51000)) → Succ(wz51000)
new_primPlusNat0(Succ(wz51200), Zero) → Succ(wz51200)
new_sr0(wz50500, wz5001) → error([])
new_compare0(wz5050, wz500) → error([])
new_ltEs8(wz5050, wz500) → new_not(error([]))
new_ltEs12(wz5050, wz500) → new_not(new_compare0(wz5050, wz500))
new_ltEs(wz5040, wz500, app(ty_[], bc)) → new_ltEs4(wz5040, wz500, bc)
new_ltEs(wz5040, wz500, ty_Ordering) → new_ltEs7(wz5040, wz500)
new_ltEs(wz5040, wz500, ty_@0) → new_ltEs10(wz5040, wz500)
new_ltEs(wz5040, wz500, ty_Double) → new_ltEs8(wz5040, wz500)
new_ltEs(wz5040, wz500, ty_Float) → new_ltEs3(wz5040, wz500)
new_ltEs(wz5040, wz500, app(app(ty_Either, bd), be)) → new_ltEs5(wz5040, wz500, bd, be)
new_ltEs(wz5040, wz500, ty_Bool) → new_ltEs13(wz5040, wz500)
new_ltEs(wz5040, wz500, app(app(ty_@2, bh), ca)) → new_ltEs11(wz5040, wz500, bh, ca)
new_ltEs(wz5040, wz500, ty_Int) → new_ltEs1(wz5040, wz500)
new_ltEs(wz5040, wz500, app(ty_Maybe, bf)) → new_ltEs6(wz5040, wz500, bf)
new_ltEs(wz5040, wz500, ty_Char) → new_ltEs2(wz5040, wz500)
new_ltEs(wz5040, wz500, ty_Integer) → new_ltEs12(wz5040, wz500)
new_ltEs(wz5040, wz500, app(ty_Ratio, bg)) → new_ltEs9(wz5040, wz500, bg)
new_ltEs(wz5040, wz500, app(app(app(ty_@3, cb), cc), cd)) → new_ltEs14(wz5040, wz500, cb, cc, cd)
The set Q consists of the following terms:
new_ltEs0(x0, x1, ty_Char)
new_not(GT)
new_compare1(:%(x0, x1), :%(x2, x3), ty_Integer)
new_ltEs0(x0, x1, ty_@0)
new_ltEs0(x0, x1, ty_Double)
new_sr(Pos(x0), Neg(x1))
new_sr(Neg(x0), Pos(x1))
new_primMulNat0(Succ(x0), Zero)
new_primMulNat0(Zero, Succ(x0))
new_compare0(x0, x1)
new_primMulNat0(Zero, Zero)
new_primPlusNat1(Zero, x0)
new_ltEs(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs(x0, x1, app(ty_Ratio, x2))
new_sr(Pos(x0), Pos(x1))
new_ltEs0(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs(x0, x1, app(app(ty_@2, x2), x3))
new_foldFM_LE0(x0, x1, x2, Branch(x3, x4, x5, x6, x7), x8, x9, x10)
new_primCmpNat0(x0, Zero)
new_ltEs10(x0, x1)
new_primPlusNat0(Succ(x0), Succ(x1))
new_ltEs0(x0, x1, ty_Integer)
new_ltEs(x0, x1, ty_Int)
new_primCmpNat0(x0, Succ(x1))
new_ltEs7(x0, x1)
new_ltEs8(x0, x1)
new_ltEs0(x0, x1, ty_Bool)
new_ltEs0(x0, x1, app(ty_Maybe, x2))
new_ltEs(x0, x1, ty_Ordering)
new_compare(Neg(Succ(x0)), Neg(x1))
new_ltEs0(x0, x1, app(app(ty_@2, x2), x3))
new_compare(Neg(Zero), Neg(Succ(x0)))
new_compare(Pos(Zero), Neg(Zero))
new_compare(Neg(Zero), Pos(Zero))
new_ltEs4(x0, x1, x2)
new_ltEs11(x0, x1, x2, x3)
new_not0
new_primPlusNat0(Zero, Zero)
new_compare(Pos(Succ(x0)), Pos(x1))
new_ltEs(x0, x1, ty_@0)
new_ltEs(x0, x1, ty_Bool)
new_ltEs0(x0, x1, ty_Ordering)
new_sr0(x0, x1)
new_primCmpNat2(Succ(x0), x1)
new_primPlusNat0(Succ(x0), Zero)
new_primCmpNat1(Succ(x0), Zero)
new_primCmpNat1(Zero, Zero)
new_ltEs3(x0, x1)
new_not(EQ)
new_ltEs(x0, x1, ty_Float)
new_compare(Neg(Zero), Neg(Zero))
new_ltEs0(x0, x1, app(ty_Ratio, x2))
new_compare(Pos(Zero), Pos(Zero))
new_primPlusNat1(Succ(x0), x1)
new_primCmpNat1(Zero, Succ(x0))
new_ltEs0(x0, x1, app(ty_[], x2))
new_ltEs1(x0, x1)
new_ltEs(x0, x1, ty_Double)
new_ltEs(x0, x1, app(ty_Maybe, x2))
new_ltEs13(x0, x1)
new_ltEs(x0, x1, ty_Integer)
new_sr(Neg(x0), Neg(x1))
new_foldFM_LE0(x0, x1, x2, EmptyFM, x3, x4, x5)
new_compare1(:%(x0, x1), :%(x2, x3), ty_Int)
new_ltEs0(x0, x1, ty_Int)
new_ltEs(x0, x1, ty_Char)
new_ltEs0(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs12(x0, x1)
new_primMulNat0(Succ(x0), Succ(x1))
new_ltEs6(x0, x1, x2)
new_compare(Pos(Zero), Pos(Succ(x0)))
new_not(LT)
new_primCmpNat2(Zero, x0)
new_ltEs(x0, x1, app(ty_[], x2))
new_primPlusNat0(Zero, Succ(x0))
new_primCmpNat1(Succ(x0), Succ(x1))
new_ltEs14(x0, x1, x2, x3, x4)
new_ltEs5(x0, x1, x2, x3)
new_compare(Neg(Succ(x0)), Pos(x1))
new_compare(Pos(Succ(x0)), Neg(x1))
new_ltEs2(x0, x1)
new_compare(Pos(Zero), Neg(Succ(x0)))
new_compare(Neg(Zero), Pos(Succ(x0)))
new_ltEs9(x0, x1, x2)
new_ltEs0(x0, x1, ty_Float)
We have to consider all minimal (P,Q,R)-chains.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
new_foldFM_LE0(x0, x1, x2, Branch(x3, x4, x5, x6, x7), x8, x9, x10)
new_foldFM_LE0(x0, x1, x2, EmptyFM, x3, x4, x5)
↳ HASKELL
↳ BR
↳ HASKELL
↳ COR
↳ HASKELL
↳ Narrow
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
Q DP problem:
The TRS P consists of the following rules:
new_foldFM_LE(wz498, wz500, Branch(wz5040, wz5041, wz5042, wz5043, wz5044), h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5040, wz5041, wz5042, wz5043, wz5044, new_ltEs(wz5040, wz500, ba), h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, Branch(wz5050, wz5051, wz5052, wz5053, wz5054), True, h, ba, bb) → new_foldFM_LE(wz498, wz500, wz504, h, ba, bb)
new_foldFM_LE2(wz498, wz501, wz502, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, new_ltEs0(wz5050, wz500, ba), h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, Branch(wz5050, wz5051, wz5052, wz5053, wz5054), True, h, ba, bb) → new_foldFM_LE2(wz498, wz501, wz502, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, Branch(wz5040, wz5041, wz5042, wz5043, wz5044), wz505, False, h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5040, wz5041, wz5042, wz5043, wz5044, new_ltEs(wz5040, wz500, ba), h, ba, bb)
new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, EmptyFM, True, h, ba, bb) → new_foldFM_LE(wz498, wz500, wz504, h, ba, bb)
The TRS R consists of the following rules:
new_ltEs0(wz5050, wz500, ty_Integer) → new_ltEs12(wz5050, wz500)
new_ltEs0(wz5050, wz500, ty_Double) → new_ltEs8(wz5050, wz500)
new_ltEs0(wz5050, wz500, app(ty_Ratio, bg)) → new_ltEs9(wz5050, wz500, bg)
new_ltEs0(wz5050, wz500, app(app(app(ty_@3, cb), cc), cd)) → new_ltEs14(wz5050, wz500, cb, cc, cd)
new_ltEs0(wz5050, wz500, ty_Char) → new_ltEs2(wz5050, wz500)
new_ltEs0(wz5050, wz500, ty_Float) → new_ltEs3(wz5050, wz500)
new_ltEs0(wz5050, wz500, ty_Int) → new_ltEs1(wz5050, wz500)
new_ltEs0(wz5050, wz500, app(app(ty_Either, bd), be)) → new_ltEs5(wz5050, wz500, bd, be)
new_ltEs0(wz5050, wz500, app(app(ty_@2, bh), ca)) → new_ltEs11(wz5050, wz500, bh, ca)
new_ltEs0(wz5050, wz500, ty_@0) → new_ltEs10(wz5050, wz500)
new_ltEs0(wz5050, wz500, app(ty_[], bc)) → new_ltEs4(wz5050, wz500, bc)
new_ltEs0(wz5050, wz500, ty_Ordering) → new_ltEs7(wz5050, wz500)
new_ltEs0(wz5050, wz500, ty_Bool) → new_ltEs13(wz5050, wz500)
new_ltEs0(wz5050, wz500, app(ty_Maybe, bf)) → new_ltEs6(wz5050, wz500, bf)
new_ltEs6(wz5050, wz500, bf) → new_not(error([]))
new_ltEs13(wz5050, wz500) → new_not(error([]))
new_ltEs7(wz5050, wz500) → new_not(error([]))
new_ltEs4(wz5050, wz500, bc) → new_not(error([]))
new_ltEs10(wz5050, wz500) → new_not(error([]))
new_ltEs11(wz5050, wz500, bh, ca) → new_not(error([]))
new_ltEs5(wz5050, wz500, bd, be) → new_not(error([]))
new_ltEs1(wz5050, wz500) → new_not(new_compare(wz5050, wz500))
new_compare(Neg(Zero), Neg(Zero)) → EQ
new_compare(Pos(Zero), Neg(Zero)) → EQ
new_compare(Neg(Zero), Pos(Zero)) → EQ
new_compare(Neg(Succ(wz505000)), Neg(wz5000)) → new_primCmpNat2(wz5000, wz505000)
new_compare(Pos(Zero), Pos(Succ(wz50000))) → new_primCmpNat2(Zero, wz50000)
new_compare(Neg(Zero), Pos(Succ(wz50000))) → LT
new_compare(Pos(Succ(wz505000)), Neg(wz5000)) → GT
new_compare(Pos(Succ(wz505000)), Pos(wz5000)) → new_primCmpNat0(wz505000, wz5000)
new_compare(Pos(Zero), Neg(Succ(wz50000))) → GT
new_compare(Neg(Succ(wz505000)), Pos(wz5000)) → LT
new_compare(Neg(Zero), Neg(Succ(wz50000))) → new_primCmpNat0(wz50000, Zero)
new_compare(Pos(Zero), Pos(Zero)) → EQ
new_not(EQ) → new_not0
new_not(GT) → False
new_not(LT) → new_not0
new_not0 → True
new_primCmpNat0(wz505000, Zero) → GT
new_primCmpNat0(wz505000, Succ(wz50000)) → new_primCmpNat1(wz505000, wz50000)
new_primCmpNat1(Succ(wz5050000), Succ(wz500000)) → new_primCmpNat1(wz5050000, wz500000)
new_primCmpNat1(Zero, Succ(wz500000)) → LT
new_primCmpNat1(Zero, Zero) → EQ
new_primCmpNat1(Succ(wz5050000), Zero) → GT
new_primCmpNat2(Zero, wz505000) → LT
new_primCmpNat2(Succ(wz50000), wz505000) → new_primCmpNat1(wz50000, wz505000)
new_ltEs3(wz5050, wz500) → new_not(error([]))
new_ltEs2(wz5050, wz500) → new_not(error([]))
new_ltEs14(wz5050, wz500, cb, cc, cd) → new_not(error([]))
new_ltEs9(wz5050, wz500, bg) → new_not(new_compare1(wz5050, wz500, bg))
new_compare1(:%(wz50500, wz50501), :%(wz5000, wz5001), ty_Integer) → new_compare0(new_sr0(wz50500, wz5001), new_sr0(wz5000, wz50501))
new_compare1(:%(wz50500, wz50501), :%(wz5000, wz5001), ty_Int) → new_compare(new_sr(wz50500, wz5001), new_sr(wz5000, wz50501))
new_sr(Neg(wz6000), Neg(wz510)) → Pos(new_primMulNat0(wz6000, wz510))
new_sr(Pos(wz6000), Pos(wz510)) → Pos(new_primMulNat0(wz6000, wz510))
new_sr(Pos(wz6000), Neg(wz510)) → Neg(new_primMulNat0(wz6000, wz510))
new_sr(Neg(wz6000), Pos(wz510)) → Neg(new_primMulNat0(wz6000, wz510))
new_primMulNat0(Succ(wz60000), Zero) → Zero
new_primMulNat0(Zero, Succ(wz5100)) → Zero
new_primMulNat0(Succ(wz60000), Succ(wz5100)) → new_primPlusNat1(new_primMulNat0(wz60000, Succ(wz5100)), wz5100)
new_primMulNat0(Zero, Zero) → Zero
new_primPlusNat1(Zero, wz5100) → Succ(wz5100)
new_primPlusNat1(Succ(wz5120), wz5100) → Succ(Succ(new_primPlusNat0(wz5120, wz5100)))
new_primPlusNat0(Succ(wz51200), Succ(wz51000)) → Succ(Succ(new_primPlusNat0(wz51200, wz51000)))
new_primPlusNat0(Zero, Zero) → Zero
new_primPlusNat0(Zero, Succ(wz51000)) → Succ(wz51000)
new_primPlusNat0(Succ(wz51200), Zero) → Succ(wz51200)
new_sr0(wz50500, wz5001) → error([])
new_compare0(wz5050, wz500) → error([])
new_ltEs8(wz5050, wz500) → new_not(error([]))
new_ltEs12(wz5050, wz500) → new_not(new_compare0(wz5050, wz500))
new_ltEs(wz5040, wz500, app(ty_[], bc)) → new_ltEs4(wz5040, wz500, bc)
new_ltEs(wz5040, wz500, ty_Ordering) → new_ltEs7(wz5040, wz500)
new_ltEs(wz5040, wz500, ty_@0) → new_ltEs10(wz5040, wz500)
new_ltEs(wz5040, wz500, ty_Double) → new_ltEs8(wz5040, wz500)
new_ltEs(wz5040, wz500, ty_Float) → new_ltEs3(wz5040, wz500)
new_ltEs(wz5040, wz500, app(app(ty_Either, bd), be)) → new_ltEs5(wz5040, wz500, bd, be)
new_ltEs(wz5040, wz500, ty_Bool) → new_ltEs13(wz5040, wz500)
new_ltEs(wz5040, wz500, app(app(ty_@2, bh), ca)) → new_ltEs11(wz5040, wz500, bh, ca)
new_ltEs(wz5040, wz500, ty_Int) → new_ltEs1(wz5040, wz500)
new_ltEs(wz5040, wz500, app(ty_Maybe, bf)) → new_ltEs6(wz5040, wz500, bf)
new_ltEs(wz5040, wz500, ty_Char) → new_ltEs2(wz5040, wz500)
new_ltEs(wz5040, wz500, ty_Integer) → new_ltEs12(wz5040, wz500)
new_ltEs(wz5040, wz500, app(ty_Ratio, bg)) → new_ltEs9(wz5040, wz500, bg)
new_ltEs(wz5040, wz500, app(app(app(ty_@3, cb), cc), cd)) → new_ltEs14(wz5040, wz500, cb, cc, cd)
The set Q consists of the following terms:
new_ltEs0(x0, x1, ty_Char)
new_not(GT)
new_compare1(:%(x0, x1), :%(x2, x3), ty_Integer)
new_ltEs0(x0, x1, ty_@0)
new_ltEs0(x0, x1, ty_Double)
new_sr(Pos(x0), Neg(x1))
new_sr(Neg(x0), Pos(x1))
new_primMulNat0(Succ(x0), Zero)
new_primMulNat0(Zero, Succ(x0))
new_compare0(x0, x1)
new_primMulNat0(Zero, Zero)
new_primPlusNat1(Zero, x0)
new_ltEs(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs(x0, x1, app(ty_Ratio, x2))
new_sr(Pos(x0), Pos(x1))
new_ltEs0(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_ltEs(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs(x0, x1, app(app(ty_@2, x2), x3))
new_primCmpNat0(x0, Zero)
new_ltEs10(x0, x1)
new_primPlusNat0(Succ(x0), Succ(x1))
new_ltEs0(x0, x1, ty_Integer)
new_ltEs(x0, x1, ty_Int)
new_primCmpNat0(x0, Succ(x1))
new_ltEs7(x0, x1)
new_ltEs8(x0, x1)
new_ltEs0(x0, x1, ty_Bool)
new_ltEs0(x0, x1, app(ty_Maybe, x2))
new_ltEs(x0, x1, ty_Ordering)
new_compare(Neg(Succ(x0)), Neg(x1))
new_ltEs0(x0, x1, app(app(ty_@2, x2), x3))
new_compare(Neg(Zero), Neg(Succ(x0)))
new_compare(Pos(Zero), Neg(Zero))
new_compare(Neg(Zero), Pos(Zero))
new_ltEs4(x0, x1, x2)
new_ltEs11(x0, x1, x2, x3)
new_not0
new_primPlusNat0(Zero, Zero)
new_compare(Pos(Succ(x0)), Pos(x1))
new_ltEs(x0, x1, ty_@0)
new_ltEs(x0, x1, ty_Bool)
new_ltEs0(x0, x1, ty_Ordering)
new_sr0(x0, x1)
new_primCmpNat2(Succ(x0), x1)
new_primPlusNat0(Succ(x0), Zero)
new_primCmpNat1(Succ(x0), Zero)
new_primCmpNat1(Zero, Zero)
new_ltEs3(x0, x1)
new_not(EQ)
new_ltEs(x0, x1, ty_Float)
new_compare(Neg(Zero), Neg(Zero))
new_ltEs0(x0, x1, app(ty_Ratio, x2))
new_compare(Pos(Zero), Pos(Zero))
new_primPlusNat1(Succ(x0), x1)
new_primCmpNat1(Zero, Succ(x0))
new_ltEs0(x0, x1, app(ty_[], x2))
new_ltEs1(x0, x1)
new_ltEs(x0, x1, ty_Double)
new_ltEs(x0, x1, app(ty_Maybe, x2))
new_ltEs13(x0, x1)
new_ltEs(x0, x1, ty_Integer)
new_sr(Neg(x0), Neg(x1))
new_compare1(:%(x0, x1), :%(x2, x3), ty_Int)
new_ltEs0(x0, x1, ty_Int)
new_ltEs(x0, x1, ty_Char)
new_ltEs0(x0, x1, app(app(ty_Either, x2), x3))
new_ltEs12(x0, x1)
new_primMulNat0(Succ(x0), Succ(x1))
new_ltEs6(x0, x1, x2)
new_compare(Pos(Zero), Pos(Succ(x0)))
new_not(LT)
new_primCmpNat2(Zero, x0)
new_ltEs(x0, x1, app(ty_[], x2))
new_primPlusNat0(Zero, Succ(x0))
new_primCmpNat1(Succ(x0), Succ(x1))
new_ltEs14(x0, x1, x2, x3, x4)
new_ltEs5(x0, x1, x2, x3)
new_compare(Neg(Succ(x0)), Pos(x1))
new_compare(Pos(Succ(x0)), Neg(x1))
new_ltEs2(x0, x1)
new_compare(Pos(Zero), Neg(Succ(x0)))
new_compare(Neg(Zero), Pos(Succ(x0)))
new_ltEs9(x0, x1, x2)
new_ltEs0(x0, x1, ty_Float)
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs:
- new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, Branch(wz5040, wz5041, wz5042, wz5043, wz5044), wz505, False, h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5040, wz5041, wz5042, wz5043, wz5044, new_ltEs(wz5040, wz500, ba), h, ba, bb)
The graph contains the following edges 1 >= 1, 2 >= 2, 6 > 3, 6 > 4, 6 > 5, 6 > 6, 6 > 7, 9 >= 9, 10 >= 10, 11 >= 11
- new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, Branch(wz5050, wz5051, wz5052, wz5053, wz5054), True, h, ba, bb) → new_foldFM_LE2(wz498, wz501, wz502, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, h, ba, bb)
The graph contains the following edges 1 >= 1, 3 >= 2, 4 >= 3, 2 >= 4, 7 > 5, 7 > 6, 7 > 7, 7 > 8, 7 > 9, 9 >= 10, 10 >= 11, 11 >= 12
- new_foldFM_LE(wz498, wz500, Branch(wz5040, wz5041, wz5042, wz5043, wz5044), h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5040, wz5041, wz5042, wz5043, wz5044, new_ltEs(wz5040, wz500, ba), h, ba, bb)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3, 3 > 4, 3 > 5, 3 > 6, 3 > 7, 4 >= 9, 5 >= 10, 6 >= 11
- new_foldFM_LE2(wz498, wz501, wz502, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, h, ba, bb) → new_foldFM_LE1(wz498, wz500, wz5050, wz5051, wz5052, wz5053, wz5054, new_ltEs0(wz5050, wz500, ba), h, ba, bb)
The graph contains the following edges 1 >= 1, 4 >= 2, 5 >= 3, 6 >= 4, 7 >= 5, 8 >= 6, 9 >= 7, 10 >= 9, 11 >= 10, 12 >= 11
- new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, Branch(wz5050, wz5051, wz5052, wz5053, wz5054), True, h, ba, bb) → new_foldFM_LE(wz498, wz500, wz504, h, ba, bb)
The graph contains the following edges 1 >= 1, 2 >= 2, 6 >= 3, 9 >= 4, 10 >= 5, 11 >= 6
- new_foldFM_LE1(wz498, wz500, wz501, wz502, wz503, wz504, EmptyFM, True, h, ba, bb) → new_foldFM_LE(wz498, wz500, wz504, h, ba, bb)
The graph contains the following edges 1 >= 1, 2 >= 2, 6 >= 3, 9 >= 4, 10 >= 5, 11 >= 6